package com.gmail.huxiaowi.cblog.util;

import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.TimeZone;

import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.KeyFactory;
import com.google.appengine.api.datastore.Text;

public class Utils {    
    
	private Utils() {}
	private static final int INTERCEPT_CHARACTERS_NUM = 400;
	private static final int INTERCEPT_TIMES = 5;
	
	public static List<Serializable> serializeList(List<Serializable> list) {
	    return new ArrayList<Serializable>(list);
	}
	
	public static String intercept(Text content) {
	    if (content == null) {
	        throw new NullPointerException("content is null");
	    }
	    String contentStr = content.getValue();
	    if (contentStr == null ||contentStr.length() == 0) {
	        return "";
	    }
	    
	    String tempStr = contentStr;
	    int lenTotal = 0;//要截取的字符个数
	    int times = 0;
	    while (true) {
	        times ++;
	        int lenTemp = tempStr.indexOf("</p>");
	        
	        //如果没有找到
	        if (lenTemp < 0) {
	            lenTotal = contentStr.length();
	            break;
	        }
	        
	        lenTotal += lenTemp + 4;
	        if (lenTotal > INTERCEPT_CHARACTERS_NUM || times == INTERCEPT_TIMES) {
	            break;
	        }
	        tempStr = tempStr.substring(lenTemp + 4);
	    }
		return contentStr.substring(0, lenTotal);
	}
	
	public static Date getGMT8CurTime() {
	    TimeZone china = TimeZone.getTimeZone("GMT+08:00");
	    Calendar cal = Calendar.getInstance(china);
	    int year = cal.get(Calendar.YEAR);
	    int month = cal.get(Calendar.MONTH);
	    int date = cal.get(Calendar.DAY_OF_MONTH);
	    int hourOfDay = cal.get(Calendar.HOUR_OF_DAY);
	    int minute = cal.get(Calendar.MINUTE);
	    Calendar cal2 = Calendar.getInstance();
	    cal2.set(year, month, date, hourOfDay, minute);
	    return cal2.getTime();
	}
	
    public static String keyToString(Key key) {
        return KeyFactory.keyToString(key);
    }
    
    public static Key stringToKey(String encoded) {
        return KeyFactory.stringToKey(encoded);
    }
    
    public static String formatDate(String pattern, Date date) {
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        return sdf.format(date);
    }
    
    public static String formatDate(Date date) {
        return formatDate("yyyy-MM-dd HH:mm:SS", date);
    }
    
    public static String formatDateWithoutTime(Date date) {
        return formatDate("yyyy-MM-dd", date);
    }
    
    public static void main(String...args) {
//        System.out.println(formatDate(new Date()));
//        String str = "<p>1 这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 2这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 3这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 4这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 5这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 6这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 7这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 8这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 9这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 10这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 11这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 12这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 13这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 14这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 15这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 16这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 17这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 18这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 19这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 20这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 21这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 22这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 23这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 24这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 25这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 26这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 27这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 28这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 29这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 30这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 31这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 32这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 33这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 34这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 35这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 36这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 37这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            + "<p> 38这个曾经创造了众多神作的伟大公司。</p><p>这个英雄辈出的伟大公司。</p>"
//            ;
//        String str = "123";
/*        str = "123";
        System.out.println(intercept(new Text(str)));
        System.out.println(getGMT8CurTime());
        
        TimeZone china=TimeZone.getTimeZone("GMT+8");
        Calendar cal1  = Calendar.getInstance(china);    
        int second =cal1.get(Calendar.SECOND);        
        int minute = cal1.get(Calendar.MINUTE);
        int hour = cal1.get(Calendar.HOUR_OF_DAY);    
        
        String strsecond = Integer.toString(second);        
        String strminute = Integer.toString(minute);
        String strhour = Integer.toString(hour);
        System.out.println("北京时间 "+strhour + ":" + strminute +":"+strsecond);//GMT+08:00
        System.out.println(cal1.getTime());//GMT+08:00
*/
        Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00"), Locale.CHINESE);
        Calendar china = Calendar.getInstance();
        china.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND));
        System.out.println(china.getTime());
        
//        int len = str.indexOf("</p>", 2);
//        System.out.println(str.substring(0, len + 4));
//        System.out.println(str.split("</p>", 1));
    }
}
